iT邦幫忙

2023 iThome 鐵人賽

DAY 29
0
Modern Web

三十天持續努力挑戰py系列 第 29

Day_29 Docker 和容器化:提高開發和部署效率

  • 分享至 

  • xImage
  •  

Docker是一個開源的容器化平台,用於開發、部署和運行應用程序。它允許開發人員將應用程序及其相關的依賴項(如庫、工具和環境設置)打包到一個稱為容器的獨立單元中。這些容器是輕量級且可移植的,可以在不同的計算機和環境中運行,而無需擔心依賴項的不一致性和運行時問題。

以下是一些Docker的主要特點和用途:

  • 容器化:Docker容器是基於操作系統層級的虛擬化技術,它們比傳統虛擬機器更輕量級,啟動速度更快。

  • 依賴性管理:Docker容器可以包含所有應用程序需要的依賴項,這樣可以確保在不同環境中具有相同的運行時行為。

  • 易於部署:Docker容器可以在不同的環境中輕松部署,從開發環境到測試環境再到生產環境,都可以使用相同的容器映像。

  • 快速構建和分享:Docker容器可以通過Docker映像檔案創建,這些映像檔案可以輕松共享和分發,從而實現快速的應用程序部署。

  • 自動化:Docker可以與自動化工具(如Docker Compose和Kubernetes)結合使用,實現自動化的應用程序部署和管理。

  • 總之,Docker通過容器化技術使應用程序的開發、部署和管理變得更加簡單和高效,並有助於解決跨不同環境的兼容性和依賴性問題。這使得Docker在現代應用程序開發和運營中非常受歡迎,以下帶大家實際操做。

  • 首先,到DOCKER的官網下載DOCKER,https://www.docker.com/products/docker-desktop/,安裝過程就不贅述。再來如果是用vscode的編譯器,推薦安裝docker的擴充,會很方便,有提供DOCKER語法以及可以直接執行DOCKER指令。

  • 在一資料夾底下新建三個檔案,分別為app.py、requirements.txt、Dockerfile(沒有副檔名)。
    app.py

from flask import Flask


app = Flask(__name__)


@app.route("/")
def index():
    return "Hello World!"

if __name__ == "__main__":
    app.run()

Dockerfile

FROM python:3.11-alpine3.15

WORKDIR /test-project

COPY * .

RUN pip install -r requirements.txt

EXPOSE 5000

CMD ["gunicorn", "--bind", "0.0.0.0:5000", "app.py:app", "--preload"]

requirements.txt

click==8.1.2
colorama==0.4.4
Flask==2.1.1
gunicorn==20.1.0
importlib-metadata==4.11.3
itsdangerous==2.1.2
Jinja2==3.1.1
MarkupSafe==2.1.1
Werkzeug==2.1.1
zipp==3.8.0
  • 都好了的話docker build --no-cache -t app.py . ,建立映像檔。docker run -it --rm -p 5000:5000 app.py,啟動。
  • 這樣在localhost:5000應該就能看到。
    參考資料:https://hackmd.io/R2i9eoqDRQa4MvoQNHbvPQ?view、https://www.youtube.com/watch?v=mPquwpxyUQU

上一篇
Day_28 https 超文字傳輸安全協定
下一篇
Day_30 賽末感想
系列文
三十天持續努力挑戰py30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言